#pragma once

#include <QObject>
#include <QString>

/**
 * @brief 系统主题检测器
 * 跨平台检测系统是否处于暗色模式
 * 支持 macOS, Windows, GNOME, KDE 等平台
 */
class SystemThemeDetector : public QObject
{
    Q_OBJECT

public:
    explicit SystemThemeDetector(QObject *parent = nullptr);
    ~SystemThemeDetector();

    /**
     * @brief 检测当前系统是否为暗色模式
     * @return true=暗色模式, false=亮色模式
     */
    static bool isDarkMode();

    /**
     * @brief 启动主题变化监听（如果平台支持）
     */
    void startWatching();

    /**
     * @brief 停止主题变化监听
     */
    void stopWatching();

signals:
    /**
     * @brief 系统主题变化信号
     * @param isDark true=切换到暗色, false=切换到亮色
     */
    void themeChanged(bool isDark);

private:
    void setupPlatformWatcher();

#ifdef Q_OS_MACOS
    void setupMacOSWatcher();
    void* m_macObserver = nullptr;
#endif

#ifdef Q_OS_WIN
    void setupWindowsWatcher();
    void* m_winEventHook = nullptr;
#endif

#ifdef Q_OS_UNIX
#ifndef Q_OS_MACOS
    void setupLinuxWatcher();
    class QFileSystemWatcher* m_fileWatcher = nullptr;
    class QTimer* m_pollTimer = nullptr;
#endif
#endif

    bool m_lastState = false;
};

